Numerous components coexist in a data processing environment. The components in a data processing environment can be hardware components, software components, or a combination thereof. For example, any number of computers, data storage devices, networking equipment, server applications, business function applications, databases, client applications, virtual servers, logical partitions, and partition management firmware can be found in a typical data processing environment.
A component in a given data processing environment can depend upon any number of other components in the data processing environment for providing their intended functionalities. For example, a client application cannot function if the computer hardware executing the client application crashes. As another example, the client application may receive a timeout or failure notification if a web-server application executing on a remote server computer cannot be reached, either because the web-server application is busy, the remote server computer is experiencing an error, or a network link between the two computers is down. As another example, some applications executing in an application server depend on a database managed by a database management application executing in another server.
Complex data processing environments can include thousands if not millions of hardware, firmware, and software components. Consequently, a large number of relationships can exist between the components in such an environment. Furthermore, not all relationships are the same. For example, in one case, a component can continue to function if a related component is unavailable or delayed. In another case, a component may experience a catastrophic failure if a related component goes offline.